﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

namespace Web
{
    public class BasePage : Page
    {
        public BasePage()
        {
            IoC.StructureMap.BuildUp(this);
            this.Load += new EventHandler(this.Page_Load);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            // если текущий пользователь не авторизирован - перенаправить его на страницу входа
            // таким образом неавторизированный пользователь не сможет попасть ни на одну страницу сайта, кроме входа и регистрации
            if (!HttpContext.Current.User.Identity.IsAuthenticated)
            {
                if (Request.Url.LocalPath.ToLower() != "/Login.aspx".ToLower() && Request.Url.LocalPath.ToLower() != "/Register.aspx".ToLower() && Request.Url.LocalPath.ToLower() != "/RegisterComplete.aspx".ToLower())
                {
                    string redirectUrl = "/Login.aspx";
                    if (!string.IsNullOrEmpty(Request.Url.LocalPath))
                    {
                        redirectUrl += "?FromUrl=" + Request.Url.LocalPath;
                    }
                    Response.Redirect(redirectUrl);
                }
            }
        }

        protected void ShowSysMsg(string message)
        {
            ShowSysMsg(message, true, 8000);
        }

        protected void ShowSysMsg(string message, bool hide, int hideAfter)
        {
            string script = string.Format("ShowSysMsg('{0}', '{1}', {2});", message, hide, hideAfter);
            ScriptManager.RegisterStartupScript(Page, GetType(), "ShowSysMsg", script, true);
        }

        protected void ShowFormError(string errorFieldId, string message)
        {
            string script = string.Format("ShowFormError('{0}', '{1}');", errorFieldId, message);
            ScriptManager.RegisterStartupScript(Page, GetType(), "ShowFormError", script, true);
        }

        protected void InitAdditionalControls()
        {
            ScriptManager.RegisterStartupScript(Page, GetType(), "InitAdditionalControls", "InitAdditionalControls();", true);
        }

        protected void BlockBody()
        {
            ScriptManager.RegisterStartupScript(Page, GetType(), "BlockBody", "BlockBody();", true);
        }

        protected void SelectMenuItem(string menuItemId)
        {
            var content = Master.FindControl("MainForm");
            var menu = (HtmlAnchor)content.FindControl(menuItemId);
            if (menu != null)
            {
                menu.Attributes.Add("class", "selected");
            }
        }

        protected void SetRequiredAttributes(List<WebControl> controls)
        {
            if (controls == null)
                return;

            foreach (var control in controls)
            {
                if (control != null)
                    control.Attributes.Add("required", "required");
            }
        }
    }
}